Given a singly linked list, delete middle of the linked list. For example, if given linked list is 1->2->3->4->5 then linked list should be modified to 1->2->4->5. If there are even nodes, then there would be two middle nodes, we need to delete the second middle element. For example, if given linked list is 1->2->3->4->5->6 then it should be modified to 1->2->3->5->6. If the input linked list is NULL or has 1 node, then it should return NULL Example 1: Input: LinkedList: 1->2->3->4->5 Output: 1 2 4 5: Example 2: Input: LinkedList: 2->4->6->7->5->1 Output: 2 4 6 5 1
Code Node* deleteMid(Node* head) { Node* temp=head; int n=0; while(temp) { n++; temp=temp->next; } int k=(n/2)+1; int i=1; temp=head; while(temp->next!=NULL) { if(k==1) { head=head->next; break; } if(i==k-1) { temp->next=temp->next->next; break; } else temp=temp->next; i++; } return head; }